﻿ using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using Modelo;
using System.Text.RegularExpressions;

namespace Negocio
{
    public static class Validar
    {
        public static bool EsCorrecto(string texto)
        {
            float resultado;
            if (string.IsNullOrEmpty(texto))
                return false;
            
            float.TryParse(texto,out resultado);
            if (resultado == 0)
                return false;
           
            

            if (resultado < 0)
                return false;

            return true;

        }
        public static bool ValidarQueNoPaseDelDiaDeLaComida(ProductoDiario producto)
        {
            if (producto.FechaComida >= producto.FechaCompra)
                return true;
            return false;

        }
        public static bool ValidarFecha(DateTime fecha)
        {
            if (fecha > DateTime.Now.Date)
                return true;
            return false;
        }
        public static Producto ValidarProducto(string nombre, string cantidad, string medida, string precio, string detalle)
        {
            float productPrice = 0;
            string exception = String.Empty;
            if (String.IsNullOrEmpty(nombre))
            {
                exception += "El nombre del producto no puede ser vacio";
            }
            if (String.IsNullOrEmpty(medida))
            {
                exception += "Debe elegir una medida";
            }
            if (!String.IsNullOrEmpty(exception))
            {
                throw new Exception(exception);
            }
            var reg = new Regex(@"^[^< ]*[^>]*$");
            if (nombre != null)
            {
                if (!reg.IsMatch(nombre))
                {
                    exception += "El nombre del producto no puede contener algunos caracteres";
                }
            }
            if (detalle != null)
            {
                if (!reg.IsMatch(detalle))
                {
                    exception += "El detalle del producto no puede contener ciertos caracteres";
                }
            }
            try
            {
                productPrice = float.Parse(precio);
                if (productPrice <= 0)
                {
                    exception += "El precio es invalido";
                }
            }
            catch (FormatException)
            {
                exception += "El precio no es valido";
            }
            if (!String.IsNullOrEmpty(exception))
            {
                throw new Exception(exception);
            }
            Producto product = new Producto
            {
                Nombre = nombre,
                Cantidad = Convert.ToInt64(cantidad),
                Medida = medida,
                Precio = float.Parse(precio),
                Detalle = detalle
            };
            return product;

        }
        
    }
}
